https://[APP Name].fly.io/callback
填入您LINE Channel 的 Webhook。標示@靈感
為開頭的文字,將作為一個獨立的靈感筆記。
標示@TODO
為開頭的文字,將寫入一個連續的的代辦清單。
無上述標示的文字,將寫入一個連續附加的在暫存筆記。也就是從別的文章分享的超連結都直接灌到此暫存筆記。[2022/10/11更新]現在也可以貼入圖片了!
如果要整理筆記,用電腦編輯整理即可。
可以參考本人2年前寫的鐵人賽文章 Day 12 : 以本機招喚 3 星鸚鵡 LINE Chat Bot - 1 (串起你的 LINE Message API ),在我的系列文 用Line聊天機器人串起多媒體系統 多數程式都還可以用,只是部署環境改成 fly.io。
重要的是在 LINE Developers
登入您的 LINE 帳號,建立 Provider 以及所屬 Channel, Channel 名稱就是您的 LINE bot 名稱,管理方式如同 LINE 官方帳號。
用程式控制的聊天機器人需要以下3個參數,請保管好勿外流。
在此範例程式中,需要將 Channel 查到的以下參數填入config.py
檔案。
CHANNEL_ACCESS_TOKEN = ''
CHANNEL_SECRET = ''
LINE_USER_ID = ''
前提是電腦需要安裝git,安裝好在終端機使用git指令(git cli),以下環境以windows示範,也請注意,這段文章說的是以 Fly.io 的範例程式做示範,與本篇文章要完成的 "HackMD 賴爸特助" 不一樣的程式,待您部署好範例再改即可。
git clone https://github.com/fly-apps/python-hellofly-flask
進入專案資料夾
cd .\python-hellofly-flask\
安裝該專案所需的外部套件
python -m pip install -r requirements.txt
如果要在本機進行開發測試,可以設置環境變數FLASK_APP
,目的是指定主程式的執行檔,對此專案而言主程式為hellofly.py
,經指定後flask run
指定就是跑主程式,而且要結合 Ngrok建立臨時通道,對您來說太複雜的話可以跳過,只是各種測試就必須等待部署後。
//設置環境變數
export FLASK_APP=hellofly.py #linux
set FLASK_APP=hellofly.py #windows
//日後啟動flask的指令
flask run
!! 如果用環境變數都跑不出來,退而求其次,在hellofly.py
最後加入:
if __name__ == '__main__':
app.run(debug=True)
啟動flask指令改為python hello.py
,請注意,這不是flask現在建議的啟用方式,本方法只適用於本機測試。
fly ctl
指令工具完成部署Fly.io 最方便部署服務的方式是使用終端機指令工具flyctl
,可以讓本機直接部署。延續官方範例繼續流程。
安裝flyctl
PowerShell
iwr https://fly.io/install.ps1 -useb | iex
Mac
brew install flyctl #MAC
Linux
curl -L https://fly.io/install.sh | sh #LINUX
flyctl auth login
啟動一個 fly App 專案,執行 flyctl launch
flyctl launch
選擇伺服器區域,最近的區域有香港、東京可選。
修改程式,這邊在範例專案中特別提醒,Procfile
檔案為設定連線服務用,與您的主程式檔名務必相符,也就是原本為web: gunicorn server:app
記得改成web: gunicorn hellofly:app
,這原理跟部署在 Heroku 是一樣的。
# file name: Procfile
web: gunicorn hellofly:app
^^^^^^^^
檢查完程式後,一鍵佈署。
flyctl deploy
查看佈署,其中hostname
就是網址了,可以用flyctl status
確認狀態、用flyctl open
開啟 APP、用flyctl logs
確認有無 BUG。
flyctl status
flyctl open
flyctl logs
如果需要設定secrets
flyctl secrets set DATABASE_URL= ....
取消 secrets
flyctl secrets unset DATABASE_URL= ....
列出 secrets list
flyctl secrets list
HackMD 賴爸特助
程式碼在此可以對照您上述部署完成的python-hellofly-flask
程式碼進行修改,填入對應的參數到config.py
、修改app.py
、requestments.txt
等檔案,修正文執行flyctl deploy
部署即可。請注意,*.toml
請用您自己的,該檔案是由 flyctl launch
產生,為了您的專案部屬所需的檔案,用範例檔會出錯唷。
也請記得補上 HackMD API token 與筆記ID相關資訊,如果要上傳圖檔,請至Imgure取得Client ID
:
HACKMD_API_TOKEN = ''
TODO_NOTE_ID = '' # paste your fixed TODO note id, len == 22
TEMP_NOTE_ID = '' # paste your fixed TEMP note id, len == 22
上述有問題的話就耐心看flyctl logs
,我常作的方式是開兩個終端機,一個執行操作、一個看 log 。
部署完成後,記得把您的 fly.io 專屬服務網址貼入 LINE Channel 的 Webhook ,網址應為 https://[APP Name].fly.io/callback
,特別是 */callback
記得填,並且設定開啟 Webhook。
如果都測試成功的話,恭喜您完成自己專屬的HackMD 賴爸特助囉
! 如您成功的話也讓我知道吧 !